package com.ruoyi.project.lesson.tag.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.text.Convert;
import com.ruoyi.framework.aspectj.lang.annotation.DataSource;
import com.ruoyi.framework.aspectj.lang.enums.DataSourceType;
import com.ruoyi.framework.web.domain.Ztree;
import com.ruoyi.project.lesson.tag.domain.LessonTag;
import com.ruoyi.project.lesson.tag.mapper.LessonTagMapper;
import com.ruoyi.project.lesson.tag.service.ILessonTagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 课程标签Service业务层处理
 *
 * @author shixiangwen
 * @date 2020-12-07
 */
@Service
@DataSource(DataSourceType.KKFORMULA)
public class LessonTagServiceImpl implements ILessonTagService {

    @Autowired
    private LessonTagMapper lessonTagMapper;

    /**
     * 查询课程标签
     *
     * @param id 课程标签ID
     * @return 课程标签
     */
    @Override
    public LessonTag selectLessonTagById(Long id) {
        return lessonTagMapper.selectLessonTagById(id);
    }

    /**
     * 查询课程标签列表
     *
     * @param lessonTag 课程标签
     * @return 课程标签
     */
    @Override
    public List<LessonTag> selectLessonTagList(LessonTag lessonTag) {
        return lessonTagMapper.selectLessonTagList(lessonTag);
    }

    /**
     * 新增课程标签
     *
     * @param lessonTag 课程标签
     * @return 结果
     */
    @Override
    public int insertLessonTag(LessonTag lessonTag) {
        lessonTag.setCreatedTime(DateUtils.getNowDate());
        return lessonTagMapper.insertLessonTag(lessonTag);
    }

    /**
     * 修改课程标签
     *
     * @param lessonTag 课程标签
     * @return 结果
     */
    @Override
    public int updateLessonTag(LessonTag lessonTag) {
        return lessonTagMapper.updateLessonTag(lessonTag);
    }

    /**
     * 删除课程标签对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteLessonTagByIds(String ids) {
        return lessonTagMapper.deleteLessonTagByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除课程标签信息
     *
     * @param id 课程标签ID
     * @return 结果
     */
    @Override
    public int deleteLessonTagById(Long id) {
        return lessonTagMapper.deleteLessonTagById(id);
    }

    @Override
    public List<LessonTag> selectAllTags() {
        LessonTag query = new LessonTag();
        query.setPid(0L);
        List<LessonTag> tags = lessonTagMapper.selectLessonTagList(query);
        for (LessonTag tag : tags) {
            LessonTag subQuery = new LessonTag();
            subQuery.setPid(tag.getId());
            tag.setChildrens(lessonTagMapper.selectLessonTagList(subQuery));
        }
        return tags;
    }

    /**
     * 查询课程标签树列表
     *
     * @return 所有课程标签信息
     */
    @Override
    public List<Ztree> selectLessonTagTree() {
        List<LessonTag> lessonTagList = lessonTagMapper.selectLessonTagList(new LessonTag());
        List<Ztree> ztrees = new ArrayList<Ztree>();
        for (LessonTag lessonTag : lessonTagList) {
            Ztree ztree = new Ztree();
            ztree.setId(lessonTag.getId());
            ztree.setpId(lessonTag.getPid());
            ztree.setName(lessonTag.getName());
            ztree.setTitle(lessonTag.getName());
            ztrees.add(ztree);
        }
        return ztrees;
    }
}
